﻿Imports System.Data.SqlClient

Public Class frmTablesCodes

    Dim szTable As String           'Nom de la table sélectionnée
    Dim bCodeAutoInc As Boolean     'Table avec code auto incrémenté

    Dim myDataset As New DataSet    'Objet DataSet
    Dim myDataTable As DataTable    'Objet DataTable
    Dim myAdapter As New Odbc.OdbcDataAdapter

    Private Sub frmTablesCodes_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        LB_TABLES.Focus()
    End Sub

    Private Sub frmTablesCodes_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        InitListeTables()
        ' utilisateur autirisé à modifier
        If gUserAcces < 9 Then
            BO_Enregistrer.Enabled = False
        Else
            BO_Enregistrer.Enabled = True
        End If

    End Sub

    'Initialiser la liste des tables
    Private Sub InitListeTables()

        ' effacer la listview
        LB_TABLES.Items.Clear()
        LB_TABLES.Items.Add("Editions")
        LB_TABLES.Items.Add("Filières")
        LB_TABLES.Items.Add("Inspecteurs")
        LB_TABLES.Items.Add("Lieux")
        LB_TABLES.Items.Add("Libellés réglement")
        LB_TABLES.Items.Add("Modes réglement")
        LB_TABLES.Items.Add("Moyens de relance")
        LB_TABLES.Items.Add("Statuts élèves")
        LB_TABLES.Items.Add("Satuts examens")
        LB_TABLES.Items.Add("Statuts leçons")
        LB_TABLES.Items.Add("TVA")
        LB_TABLES.Items.Add("Types de relance")
        LB_TABLES.Items.Add("Abandons")
        LB_TABLES.Items.Add("Origines")
        LB_TABLES.Items.Add("Types de contact")
        LB_TABLES.Items.Add("Types de formation")
        LB_TABLES.SelectedIndex = 0

    End Sub

    Private Sub lb_Tables_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LB_TABLES.DoubleClick

        ' rendre visible
        lb_NomTable.Visible = True
        DG_Codes.Visible = True

        TE_Comment.Text = ""
        bCodeAutoInc = True
        Select Case LB_TABLES.SelectedIndex
            Case 0
                szTable = "P_ETATS"
                TE_Comment.Text = "Le code Editions est auto-incrémenté."
            Case 1
                szTable = "P_FILIERES"
                TE_Comment.Text = ""
                bCodeAutoInc = False
            Case 2
                szTable = "P_INSPECTEURS"
                TE_Comment.Text = "Le code Inspecteur est auto-incrémenté."
            Case 3
                szTable = "P_LIEUX"
                TE_Comment.Text = "EX = Examens," & vbCrLf & "Ag = Moto," & vbCrLf & "Dg = Code," & vbCrLf & "Eg = Examen blanc" & vbCrLf & _
                                  "Ig = Circuit," & vbCrLf & "Rg = RdV Pédagogique" & vbCrLf & vbCrLf & "g = Groupe (A, B, C,...)" & vbCrLf
            Case 4
                szTable = "P_LIBELLE_REGL"
                TE_Comment.Text = "Le code du libellé est auto-incrémenté."
            Case 5
                szTable = "P_MODE_REGL"
                TE_Comment.Text = "Les régelements dont le code > 5 ne seront exportés en compta."
                bCodeAutoInc = False
            Case 6
                szTable = "P_MOYENS_RELANCE"
                TE_Comment.Text = "Le code Moyen est auto-incrémenté."
            Case 7
                szTable = "P_STATUTS"
                TE_Comment.Text = "Si code >= 10, la fiche est clôturée" 
                bCodeAutoInc = False
            Case 8
                szTable = "P_STATUTS_EXAM"
                TE_Comment.Text = "Si code >= 10, la leçon sera débitée" & vbCrLf & _
                                 "sur le compte de l'élève. Sinon," & vbCrLf & _
                                 "aucun débit ne sera effectué."
                bCodeAutoInc = False
            Case 9
                szTable = "P_STATUTS_LECON"
                TE_Comment.Text = "Si code >= 10, la leçon sera débitée" & vbCrLf & _
                                  "sur le compte de l'élève. Sinon," & vbCrLf & _
                                  "aucun débit ne sera effectué."
                bCodeAutoInc = False
            Case 10
                szTable = "P_TVA"
                TE_Comment.Text = "Le code TVA est auto-incrémenté."
            Case 11
                szTable = "P_TYPES_RELANCE"
                TE_Comment.Text = "Le code Type est auto-incrémenté."
            Case 12
                szTable = "P_ABANDONS"
                TE_Comment.Text = "Le code Abandons est auto-incrémenté."
            Case 13
                szTable = "P_ORIGINES"
                TE_Comment.Text = "Le code Origines est auto-incrémenté."
            Case 14
                szTable = "P_TYPES_CONTACT"
                TE_Comment.Text = "Le code Type est auto-incrémenté."
            Case 15
                szTable = "P_TYPES_FORMATION"
                TE_Comment.Text = "Le code Type est auto-incrémenté."
        End Select

        lb_NomTable.Text = "Table " & szTable & " : " & LB_TABLES.SelectedItem

        myDataset.Clear()

        ' effacer le contenu du Datagrid
        DG_Codes.DataSource = Nothing
        DG_Codes.Rows.Clear()
        DG_Codes.Refresh()

        ' définir la table comme source de donnée
        myConnect.ConnectionString = ctDSN_AEM
        myCommand.CommandText = "SELECT * FROM " & szTable & " ORDER BY code"
        myCommand.Connection = myConnect
        myAdapter.SelectCommand() = myCommand

        ' lier le Dataset à la source de donnée
        myAdapter.Fill(myDataset, szTable)
        ' remplir la DataTable par le Dataset
        myDataTable = myDataset.Tables(szTable)
        ' puis l'afficher dans le Datagrid
        DG_Codes.DataSource = myDataTable
        myConnect.Close()

        ' Définir la colonne identifiant comme ReadOnly pour empecher la maj
        If bCodeAutoInc = True Then
            DG_Codes.Columns(0).ReadOnly = True
        End If

        DG_Codes.DefaultCellStyle.SelectionBackColor = Color.Gray
        DG_Codes.DefaultCellStyle.BackColor = Color.Ivory
        ' rendre visible
        lb_NomTable.Visible = True
        DG_Codes.Visible = True

    End Sub

    Private Sub lb_Tables_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles LB_TABLES.KeyDown
        ' touche Enter = DoubleClick
        If e.KeyCode = Keys.Enter Then
            lb_Tables_DoubleClick(sender, e)
        End If

    End Sub

    Private Sub BO_Enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_Enregistrer.Click
        ' générer automatiquement les cmd SQL Insert, Update
        Dim myCmdBuilder As New Odbc.OdbcCommandBuilder(myAdapter)
        Dim i As Integer 'La variable i donne le nombre d'enregistrement

        Try

            'Vérifiez que des modifications ont eu lieu
            If myDataset.HasChanges Then
                'Mise-à-jour des données dans la base de données
                i = myAdapter.Update(myDataset, szTable)
                MsgBox(i & " enregistrement(s) modifié(s)", vbInformation)
            End If
        Catch ex As Exception
            MessageBox.Show("Une erreur est survenue au moment de la mise à jour :" & vbCrLf & ex.Message)

        End Try


    End Sub
End Class